{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## *This notebook reproduces results in Rezayi and Read, PRL 72, 900 (1994)*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load QHED code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "qhed_dir = \"../\"\n",
    "# CG_dir = joinpath(qhed_dir, \"CG\") # specify directory for precomputed Clebsch-Gordan coefficients\n",
    "\n",
    "include(joinpath(qhed_dir, \"src\", \"QHED.jl\"));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Set matplotlib defaults"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using PyPlot\n",
    "\n",
    "PyPlot.matplotlib[:rc](\"font\", size=14)\n",
    "PyPlot.matplotlib[:rc](\"text\", usetex=true)\n",
    "PyPlot.matplotlib[:rc](\"xtick\", direction=\"in\", bottom=\"on\", top=\"on\")\n",
    "PyPlot.matplotlib[:rc](\"xtick.minor\", visible=\"on\")\n",
    "PyPlot.matplotlib[:rc](\"ytick\", direction=\"in\", left=\"on\", right=\"on\")\n",
    "PyPlot.matplotlib[:rc](\"ytick.minor\", visible=\"on\")\n",
    "\n",
    "# bblue = \"#0C2340\"\n",
    "# borange = \"#FC4C02\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculate energy spectra for various $N$\n",
    "To investigate the compressible CFL in the lowest Landau level, Rezayi and Read consider systems with $N_\\phi = 2(N - 1)$. Below we reproduce (for brevity, only a subset of) the results in Figs. 1-3 of Rezayi and Read."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### N = 7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building states list for N = 7, Nphi = 12, Lz = 0 ...\n",
      "Finished building states list of size 94\n",
      "elapsed time: 0.09704126 seconds\n",
      "\n",
      "Building L^2 matrix of size 94 x 94 ...\n",
      "Working on LpLm, column j = 1: 1/94 = 1.0638297872340425%\n",
      "Working on LpLm, column j = 5: 5/94 = 5.319148936170213%\n",
      "Working on LpLm, column j = 10: 10/94 = 10.638297872340425%\n",
      "Working on LpLm, column j = 15: 15/94 = 15.957446808510639%\n",
      "Working on LpLm, column j = 20: 20/94 = 21.27659574468085%\n",
      "Working on LpLm, column j = 25: 25/94 = 26.595744680851062%\n",
      "Working on LpLm, column j = 30: 30/94 = 31.914893617021278%\n",
      "Working on LpLm, column j = 35: 35/94 = 37.234042553191486%\n",
      "Working on LpLm, column j = 40: 40/94 = 42.5531914893617%\n",
      "Working on LpLm, column j = 45: 45/94 = 47.87234042553192%\n",
      "Working on LpLm, column j = 50: 50/94 = 53.191489361702125%\n",
      "Working on LpLm, column j = 55: 55/94 = 58.51063829787234%\n",
      "Working on LpLm, column j = 60: 60/94 = 63.829787234042556%\n",
      "Working on LpLm, column j = 65: 65/94 = 69.14893617021276%\n",
      "Working on LpLm, column j = 70: 70/94 = 74.46808510638297%\n",
      "Working on LpLm, column j = 75: 75/94 = 79.7872340425532%\n",
      "Working on LpLm, column j = 80: 80/94 = 85.1063829787234%\n",
      "Working on LpLm, column j = 85: 85/94 = 90.42553191489361%\n",
      "Working on LpLm, column j = 90: 90/94 = 95.74468085106383%\n",
      "Working on Lz^2, column j = 1: 1/94 = 1.0638297872340425%\n",
      "Working on Lz^2, column j = 10: 10/94 = 10.638297872340425%\n",
      "Working on Lz^2, column j = 20: 20/94 = 21.27659574468085%\n",
      "Working on Lz^2, column j = 30: 30/94 = 31.914893617021278%\n",
      "Working on Lz^2, column j = 40: 40/94 = 42.5531914893617%\n",
      "Working on Lz^2, column j = 50: 50/94 = 53.191489361702125%\n",
      "Working on Lz^2, column j = 60: 60/94 = 63.829787234042556%\n",
      "Working on Lz^2, column j = 70: 70/94 = 74.46808510638297%\n",
      "Working on Lz^2, column j = 80: 80/94 = 85.1063829787234%\n",
      "Working on Lz^2, column j = 90: 90/94 = 95.74468085106383%\n",
      "elapsed time: 0.123275748 seconds\n",
      "\n",
      "Building CG table for ell1 = 6.0, ell2 = 6.0:\n",
      "Working on alpha1 = 1: 1/13\n",
      "Working on alpha1 = 2: 2/13\n",
      "Working on alpha1 = 3: 3/13\n",
      "Working on alpha1 = 4: 4/13\n",
      "Working on alpha1 = 5: 5/13\n",
      "Working on alpha1 = 6: 6/13\n",
      "Working on alpha1 = 7: 7/13\n",
      "Working on alpha1 = 8: 8/13\n",
      "Working on alpha1 = 9: 9/13\n",
      "Working on alpha1 = 10: 10/13\n",
      "Working on alpha1 = 11: 11/13\n",
      "Working on alpha1 = 12: 12/13\n",
      "Working on alpha1 = 13: 13/13\n",
      "elapsed time: 11.084124965 seconds\n",
      "\n",
      "Building 2-body interaction matrix ...\n",
      "Working on alpha1 = 1: 1/13\n",
      "Working on alpha1 = 2: 2/13\n",
      "Working on alpha1 = 3: 3/13\n",
      "Working on alpha1 = 4: 4/13\n",
      "Working on alpha1 = 5: 5/13\n",
      "Working on alpha1 = 6: 6/13\n",
      "Working on alpha1 = 7: 7/13\n",
      "Working on alpha1 = 8: 8/13\n",
      "Working on alpha1 = 9: 9/13\n",
      "Working on alpha1 = 10: 10/13\n",
      "Working on alpha1 = 11: 11/13\n",
      "Working on alpha1 = 12: 12/13\n",
      "Working on alpha1 = 13: 13/13\n",
      "elapsed time: 0.227115747 seconds\n",
      "\n",
      "Building Hami matrix of size 94 x 94 ...\n",
      "Working on H, column j = 1: 1/94 = 1.0638297872340425%\n",
      "Working on H, column j = 5: 5/94 = 5.319148936170213%\n",
      "Working on H, column j = 10: 10/94 = 10.638297872340425%\n",
      "Working on H, column j = 15: 15/94 = 15.957446808510639%\n",
      "Working on H, column j = 20: 20/94 = 21.27659574468085%\n",
      "Working on H, column j = 25: 25/94 = 26.595744680851062%\n",
      "Working on H, column j = 30: 30/94 = 31.914893617021278%\n",
      "Working on H, column j = 35: 35/94 = 37.234042553191486%\n",
      "Working on H, column j = 40: 40/94 = 42.5531914893617%\n",
      "Working on H, column j = 45: 45/94 = 47.87234042553192%\n",
      "Working on H, column j = 50: 50/94 = 53.191489361702125%\n",
      "Working on H, column j = 55: 55/94 = 58.51063829787234%\n",
      "Working on H, column j = 60: 60/94 = 63.829787234042556%\n",
      "Working on H, column j = 65: 65/94 = 69.14893617021276%\n",
      "Working on H, column j = 70: 70/94 = 74.46808510638297%\n",
      "Working on H, column j = 75: 75/94 = 79.7872340425532%\n",
      "Working on H, column j = 80: 80/94 = 85.1063829787234%\n",
      "Working on H, column j = 85: 85/94 = 90.42553191489361%\n",
      "Working on H, column j = 90: 90/94 = 95.74468085106383%\n",
      "elapsed time: 0.004355166 seconds\n",
      "\n",
      " 11.546094 seconds (12.09 M allocations: 217.535 MiB, 0.50% gc time)\n",
      "Diagonalizing Hami of size 94 x 94 with eig ...\n",
      "elapsed time: 0.228657364 seconds\n",
      "\n",
      "Organizing spectrum according to quantum number L ...\n",
      "elapsed time: 0.000340698 seconds\n",
      "\n"
     ]
    }
   ],
   "source": [
    "N = 7\n",
    "Nphi = 2*(N-1)\n",
    "\n",
    "setup = HaldaneSphereSetupLLL(N, Nphi, 0)\n",
    "\n",
    "pp = spherical_Coulomb_pseudopotentials(get_ell(setup), 0)\n",
    "@time Hami = HaldaneSphereHamiLLL(setup, pp, build_CG_table(get_ell(setup)))\n",
    "# @time Hami = HaldaneSphereHamiLLL(setup, pp, load_CG_table(get_ell(setup), CG_dir))\n",
    "eig!(Hami)\n",
    "organize_spectrum!(Hami);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x12fec6d90>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax[:plot](Hami.spectrum[:, 1], Hami.spectrum[:, 2] - minimum(Hami.spectrum[:, 2]), ls=\"none\", marker=\"_\", ms=\"12\", mew=\"1.5\")\n",
    "ax[:set_xlabel](\"\\$L\\$\")\n",
    "ax[:set_ylabel](\"\\$E~[e^2/(\\\\epsilon\\\\ell_0]\\$\")\n",
    "ax[:set_title](\"\\$N=$(N), N_\\\\phi=$(Nphi)\\$\")\n",
    "ax[:set_xlim](-1, 15)\n",
    "ax[:set_ylim](-0.01, 0.43);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### N = 8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building states list for N = 8, Nphi = 14, Lz = 0 ...\n",
      "Finished building states list of size 289\n",
      "elapsed time: 0.003114238 seconds\n",
      "\n",
      "Building L^2 matrix of size 289 x 289 ...\n",
      "Working on LpLm, column j = 1: 1/289 = 0.3460207612456747%\n",
      "Working on LpLm, column j = 15: 15/289 = 5.190311418685121%\n",
      "Working on LpLm, column j = 30: 30/289 = 10.380622837370241%\n",
      "Working on LpLm, column j = 45: 45/289 = 15.570934256055363%\n",
      "Working on LpLm, column j = 60: 60/289 = 20.761245674740483%\n",
      "Working on LpLm, column j = 75: 75/289 = 25.951557093425606%\n",
      "Working on LpLm, column j = 90: 90/289 = 31.141868512110726%\n",
      "Working on LpLm, column j = 105: 105/289 = 36.332179930795846%\n",
      "Working on LpLm, column j = 120: 120/289 = 41.522491349480966%\n",
      "Working on LpLm, column j = 135: 135/289 = 46.71280276816609%\n",
      "Working on LpLm, column j = 150: 150/289 = 51.90311418685121%\n",
      "Working on LpLm, column j = 165: 165/289 = 57.09342560553633%\n",
      "Working on LpLm, column j = 180: 180/289 = 62.28373702422145%\n",
      "Working on LpLm, column j = 195: 195/289 = 67.47404844290658%\n",
      "Working on LpLm, column j = 210: 210/289 = 72.66435986159169%\n",
      "Working on LpLm, column j = 225: 225/289 = 77.85467128027682%\n",
      "Working on LpLm, column j = 240: 240/289 = 83.04498269896193%\n",
      "Working on LpLm, column j = 255: 255/289 = 88.23529411764706%\n",
      "Working on LpLm, column j = 270: 270/289 = 93.42560553633218%\n",
      "Working on LpLm, column j = 285: 285/289 = 98.6159169550173%\n",
      "Working on Lz^2, column j = 1: 1/289 = 0.3460207612456747%\n",
      "Working on Lz^2, column j = 29: 29/289 = 10.034602076124568%\n",
      "Working on Lz^2, column j = 58: 58/289 = 20.069204152249135%\n",
      "Working on Lz^2, column j = 87: 87/289 = 30.103806228373703%\n",
      "Working on Lz^2, column j = 116: 116/289 = 40.13840830449827%\n",
      "Working on Lz^2, column j = 145: 145/289 = 50.173010380622834%\n",
      "Working on Lz^2, column j = 174: 174/289 = 60.207612456747405%\n",
      "Working on Lz^2, column j = 203: 203/289 = 70.24221453287197%\n",
      "Working on Lz^2, column j = 232: 232/289 = 80.27681660899654%\n",
      "Working on Lz^2, column j = 261: 261/289 = 90.31141868512111%\n",
      "elapsed time: 0.017186771 seconds\n",
      "\n",
      "Building CG table for ell1 = 7.0, ell2 = 7.0:\n",
      "Working on alpha1 = 1: 1/15\n",
      "Working on alpha1 = 2: 2/15\n",
      "Working on alpha1 = 3: 3/15\n",
      "Working on alpha1 = 4: 4/15\n",
      "Working on alpha1 = 5: 5/15\n",
      "Working on alpha1 = 6: 6/15\n",
      "Working on alpha1 = 7: 7/15\n",
      "Working on alpha1 = 8: 8/15\n",
      "Working on alpha1 = 9: 9/15\n",
      "Working on alpha1 = 10: 10/15\n",
      "Working on alpha1 = 11: 11/15\n",
      "Working on alpha1 = 12: 12/15\n",
      "Working on alpha1 = 13: 13/15\n",
      "Working on alpha1 = 14: 14/15\n",
      "Working on alpha1 = 15: 15/15\n",
      "elapsed time: 20.614163743 seconds\n",
      "\n",
      "Building 2-body interaction matrix ...\n",
      "Working on alpha1 = 1: 1/15\n",
      "Working on alpha1 = 2: 2/15\n",
      "Working on alpha1 = 3: 3/15\n",
      "Working on alpha1 = 4: 4/15\n",
      "Working on alpha1 = 5: 5/15\n",
      "Working on alpha1 = 6: 6/15\n",
      "Working on alpha1 = 7: 7/15\n",
      "Working on alpha1 = 8: 8/15\n",
      "Working on alpha1 = 9: 9/15\n",
      "Working on alpha1 = 10: 10/15\n",
      "Working on alpha1 = 11: 11/15\n",
      "Working on alpha1 = 12: 12/15\n",
      "Working on alpha1 = 13: 13/15\n",
      "Working on alpha1 = 14: 14/15\n",
      "Working on alpha1 = 15: 15/15\n",
      "elapsed time: 0.569253627 seconds\n",
      "\n",
      "Building Hami matrix of size 289 x 289 ...\n",
      "Working on H, column j = 1: 1/289 = 0.3460207612456747%\n",
      "Working on H, column j = 15: 15/289 = 5.190311418685121%\n",
      "Working on H, column j = 30: 30/289 = 10.380622837370241%\n",
      "Working on H, column j = 45: 45/289 = 15.570934256055363%\n",
      "Working on H, column j = 60: 60/289 = 20.761245674740483%\n",
      "Working on H, column j = 75: 75/289 = 25.951557093425606%\n",
      "Working on H, column j = 90: 90/289 = 31.141868512110726%\n",
      "Working on H, column j = 105: 105/289 = 36.332179930795846%\n",
      "Working on H, column j = 120: 120/289 = 41.522491349480966%\n",
      "Working on H, column j = 135: 135/289 = 46.71280276816609%\n",
      "Working on H, column j = 150: 150/289 = 51.90311418685121%\n",
      "Working on H, column j = 165: 165/289 = 57.09342560553633%\n",
      "Working on H, column j = 180: 180/289 = 62.28373702422145%\n",
      "Working on H, column j = 195: 195/289 = 67.47404844290658%\n",
      "Working on H, column j = 210: 210/289 = 72.66435986159169%\n",
      "Working on H, column j = 225: 225/289 = 77.85467128027682%\n",
      "Working on H, column j = 240: 240/289 = 83.04498269896193%\n",
      "Working on H, column j = 255: 255/289 = 88.23529411764706%\n",
      "Working on H, column j = 270: 270/289 = 93.42560553633218%\n",
      "Working on H, column j = 285: 285/289 = 98.6159169550173%\n",
      "elapsed time: 0.024598884 seconds\n",
      "\n",
      " 21.209051 seconds (26.97 M allocations: 475.904 MiB, 0.41% gc time)\n",
      "Diagonalizing Hami of size 289 x 289 with eig ...\n",
      "elapsed time: 0.036995822 seconds\n",
      "\n",
      "Organizing spectrum according to quantum number L ...\n",
      "elapsed time: 0.002738729 seconds\n",
      "\n"
     ]
    }
   ],
   "source": [
    "N = 8\n",
    "Nphi = 2*(N-1)\n",
    "\n",
    "setup = HaldaneSphereSetupLLL(N, Nphi, 0)\n",
    "\n",
    "pp = spherical_Coulomb_pseudopotentials(get_ell(setup), 0)\n",
    "@time Hami = HaldaneSphereHamiLLL(setup, pp, build_CG_table(get_ell(setup)))\n",
    "# @time Hami = HaldaneSphereHamiLLL(setup, pp, load_CG_table(get_ell(setup), CG_dir))\n",
    "eig!(Hami)\n",
    "organize_spectrum!(Hami);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x1340dcbd0>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax[:plot](Hami.spectrum[:, 1], Hami.spectrum[:, 2] - minimum(Hami.spectrum[:, 2]), ls=\"none\", marker=\"_\", ms=\"12\", mew=\"1.5\")\n",
    "ax[:set_xlabel](\"\\$L\\$\")\n",
    "ax[:set_ylabel](\"\\$E~[e^2/(\\\\epsilon\\\\ell_0]\\$\")\n",
    "ax[:set_title](\"\\$N=$(N), N_\\\\phi=$(Nphi)\\$\")\n",
    "ax[:set_xlim](-1, 15)\n",
    "ax[:set_ylim](-0.01, 0.4);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### N = 13"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building states list for N = 13, Nphi = 24, Lz = 0 ...\n",
      "Finished building states list of size 110780\n",
      "elapsed time: 2.716903615 seconds\n",
      "\n",
      "Building L^2 matrix of size 110780 x 110780 ...\n",
      "Working on LpLm, column j = 1: 1/110780 = 0.0009026900162484203%\n",
      "Working on LpLm, column j = 5539: 5539/110780 = 5.0%\n",
      "Working on LpLm, column j = 11078: 11078/110780 = 10.0%\n",
      "Working on LpLm, column j = 16617: 16617/110780 = 15.0%\n",
      "Working on LpLm, column j = 22156: 22156/110780 = 20.0%\n",
      "Working on LpLm, column j = 27695: 27695/110780 = 25.0%\n",
      "Working on LpLm, column j = 33234: 33234/110780 = 30.0%\n",
      "Working on LpLm, column j = 38773: 38773/110780 = 35.0%\n",
      "Working on LpLm, column j = 44312: 44312/110780 = 40.0%\n",
      "Working on LpLm, column j = 49851: 49851/110780 = 45.0%\n",
      "Working on LpLm, column j = 55390: 55390/110780 = 50.0%\n",
      "Working on LpLm, column j = 60929: 60929/110780 = 55.0%\n",
      "Working on LpLm, column j = 66468: 66468/110780 = 60.0%\n",
      "Working on LpLm, column j = 72007: 72007/110780 = 65.0%\n",
      "Working on LpLm, column j = 77546: 77546/110780 = 70.0%\n",
      "Working on LpLm, column j = 83085: 83085/110780 = 75.0%\n",
      "Working on LpLm, column j = 88624: 88624/110780 = 80.0%\n",
      "Working on LpLm, column j = 94163: 94163/110780 = 85.0%\n",
      "Working on LpLm, column j = 99702: 99702/110780 = 90.0%\n",
      "Working on LpLm, column j = 105241: 105241/110780 = 95.0%\n",
      "Working on LpLm, column j = 110780: 110780/110780 = 100.0%\n",
      "Working on Lz^2, column j = 1: 1/110780 = 0.0009026900162484203%\n",
      "Working on Lz^2, column j = 11078: 11078/110780 = 10.0%\n",
      "Working on Lz^2, column j = 22156: 22156/110780 = 20.0%\n",
      "Working on Lz^2, column j = 33234: 33234/110780 = 30.0%\n",
      "Working on Lz^2, column j = 44312: 44312/110780 = 40.0%\n",
      "Working on Lz^2, column j = 55390: 55390/110780 = 50.0%\n",
      "Working on Lz^2, column j = 66468: 66468/110780 = 60.0%\n",
      "Working on Lz^2, column j = 77546: 77546/110780 = 70.0%\n",
      "Working on Lz^2, column j = 88624: 88624/110780 = 80.0%\n",
      "Working on Lz^2, column j = 99702: 99702/110780 = 90.0%\n",
      "Working on Lz^2, column j = 110780: 110780/110780 = 100.0%\n",
      "elapsed time: 14.040612968 seconds\n",
      "\n",
      "Building CG table for ell1 = 12.0, ell2 = 12.0:\n",
      "Working on alpha1 = 1: 1/25\n",
      "Working on alpha1 = 2: 2/25\n",
      "Working on alpha1 = 3: 3/25\n",
      "Working on alpha1 = 4: 4/25\n",
      "Working on alpha1 = 5: 5/25\n",
      "Working on alpha1 = 6: 6/25\n",
      "Working on alpha1 = 7: 7/25\n",
      "Working on alpha1 = 8: 8/25\n",
      "Working on alpha1 = 9: 9/25\n",
      "Working on alpha1 = 10: 10/25\n",
      "Working on alpha1 = 11: 11/25\n",
      "Working on alpha1 = 12: 12/25\n",
      "Working on alpha1 = 13: 13/25\n",
      "Working on alpha1 = 14: 14/25\n",
      "Working on alpha1 = 15: 15/25\n",
      "Working on alpha1 = 16: 16/25\n",
      "Working on alpha1 = 17: 17/25\n",
      "Working on alpha1 = 18: 18/25\n",
      "Working on alpha1 = 19: 19/25\n",
      "Working on alpha1 = 20: 20/25\n",
      "Working on alpha1 = 21: 21/25\n",
      "Working on alpha1 = 22: 22/25\n",
      "Working on alpha1 = 23: 23/25\n",
      "Working on alpha1 = 24: 24/25\n",
      "Working on alpha1 = 25: 25/25\n",
      "elapsed time: 153.219930624 seconds\n",
      "\n",
      "Building 2-body interaction matrix ...\n",
      "Working on alpha1 = 1: 1/25\n",
      "Working on alpha1 = 2: 2/25\n",
      "Working on alpha1 = 3: 3/25\n",
      "Working on alpha1 = 4: 4/25\n",
      "Working on alpha1 = 5: 5/25\n",
      "Working on alpha1 = 6: 6/25\n",
      "Working on alpha1 = 7: 7/25\n",
      "Working on alpha1 = 8: 8/25\n",
      "Working on alpha1 = 9: 9/25\n",
      "Working on alpha1 = 10: 10/25\n",
      "Working on alpha1 = 11: 11/25\n",
      "Working on alpha1 = 12: 12/25\n",
      "Working on alpha1 = 13: 13/25\n",
      "Working on alpha1 = 14: 14/25\n",
      "Working on alpha1 = 15: 15/25\n",
      "Working on alpha1 = 16: 16/25\n",
      "Working on alpha1 = 17: 17/25\n",
      "Working on alpha1 = 18: 18/25\n",
      "Working on alpha1 = 19: 19/25\n",
      "Working on alpha1 = 20: 20/25\n",
      "Working on alpha1 = 21: 21/25\n",
      "Working on alpha1 = 22: 22/25\n",
      "Working on alpha1 = 23: 23/25\n",
      "Working on alpha1 = 24: 24/25\n",
      "Working on alpha1 = 25: 25/25\n",
      "elapsed time: 12.007293983 seconds\n",
      "\n",
      "Building Hami matrix of size 110780 x 110780 ...\n",
      "Working on H, column j = 1: 1/110780 = 0.0009026900162484203%\n",
      "Working on H, column j = 5539: 5539/110780 = 5.0%\n",
      "Working on H, column j = 11078: 11078/110780 = 10.0%\n",
      "Working on H, column j = 16617: 16617/110780 = 15.0%\n",
      "Working on H, column j = 22156: 22156/110780 = 20.0%\n",
      "Working on H, column j = 27695: 27695/110780 = 25.0%\n",
      "Working on H, column j = 33234: 33234/110780 = 30.0%\n",
      "Working on H, column j = 38773: 38773/110780 = 35.0%\n",
      "Working on H, column j = 44312: 44312/110780 = 40.0%\n",
      "Working on H, column j = 49851: 49851/110780 = 45.0%\n",
      "Working on H, column j = 55390: 55390/110780 = 50.0%\n",
      "Working on H, column j = 60929: 60929/110780 = 55.0%\n",
      "Working on H, column j = 66468: 66468/110780 = 60.0%\n",
      "Working on H, column j = 72007: 72007/110780 = 65.0%\n",
      "Working on H, column j = 77546: 77546/110780 = 70.0%\n",
      "Working on H, column j = 83085: 83085/110780 = 75.0%\n",
      "Working on H, column j = 88624: 88624/110780 = 80.0%\n",
      "Working on H, column j = 94163: 94163/110780 = 85.0%\n",
      "Working on H, column j = 99702: 99702/110780 = 90.0%\n",
      "Working on H, column j = 105241: 105241/110780 = 95.0%\n",
      "Working on H, column j = 110780: 110780/110780 = 100.0%\n",
      "elapsed time: 47.113124359 seconds\n",
      "\n",
      "212.341726 seconds (773.93 M allocations: 58.450 GiB, 3.38% gc time)\n",
      "Diagonalizing Hami of size 110780 x 110780 with eigs, nev = 50 ...\n",
      "elapsed time: 63.614833199 seconds\n",
      "\n",
      "Organizing spectrum according to quantum number L ...\n",
      "elapsed time: 0.364328987 seconds\n",
      "\n"
     ]
    }
   ],
   "source": [
    "N = 13\n",
    "Nphi = 2*(N-1)\n",
    "\n",
    "setup = HaldaneSphereSetupLLL(N, Nphi, 0)\n",
    "\n",
    "pp = spherical_Coulomb_pseudopotentials(get_ell(setup), 0)\n",
    "@time Hami = HaldaneSphereHamiLLL(setup, pp, build_CG_table(get_ell(setup)))\n",
    "# @time Hami = HaldaneSphereHamiLLL(setup, pp, load_CG_table(get_ell(setup), CG_dir))\n",
    "eigs!(Hami, 50)\n",
    "organize_spectrum!(Hami);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x134085050>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax[:plot](Hami.spectrum[:, 1], Hami.spectrum[:, 2] - minimum(Hami.spectrum[:, 2]), ls=\"none\", marker=\"_\", ms=\"12\", mew=\"1.5\")\n",
    "ax[:set_xlabel](\"\\$L\\$\")\n",
    "ax[:set_ylabel](\"\\$E~[e^2/(\\\\epsilon\\\\ell_0]\\$\")\n",
    "ax[:set_title](\"\\$N=$(N), N_\\\\phi=$(Nphi)\\$\")\n",
    "ax[:set_xlim](-1, 15)\n",
    "ax[:set_ylim](-0.001, 0.09);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### N = 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building states list for N = 9, Nphi = 16, Lz = 0 ...\n",
      "Finished building states list of size 910\n",
      "elapsed time: 0.007934091 seconds\n",
      "\n",
      "Building L^2 matrix of size 910 x 910 ...\n",
      "Working on LpLm, column j = 1: 1/910 = 0.10989010989010989%\n",
      "Working on LpLm, column j = 46: 46/910 = 5.054945054945055%\n",
      "Working on LpLm, column j = 92: 92/910 = 10.10989010989011%\n",
      "Working on LpLm, column j = 138: 138/910 = 15.164835164835164%\n",
      "Working on LpLm, column j = 184: 184/910 = 20.21978021978022%\n",
      "Working on LpLm, column j = 230: 230/910 = 25.274725274725274%\n",
      "Working on LpLm, column j = 276: 276/910 = 30.32967032967033%\n",
      "Working on LpLm, column j = 322: 322/910 = 35.38461538461539%\n",
      "Working on LpLm, column j = 368: 368/910 = 40.43956043956044%\n",
      "Working on LpLm, column j = 414: 414/910 = 45.494505494505496%\n",
      "Working on LpLm, column j = 460: 460/910 = 50.54945054945055%\n",
      "Working on LpLm, column j = 506: 506/910 = 55.604395604395606%\n",
      "Working on LpLm, column j = 552: 552/910 = 60.65934065934066%\n",
      "Working on LpLm, column j = 598: 598/910 = 65.71428571428571%\n",
      "Working on LpLm, column j = 644: 644/910 = 70.76923076923077%\n",
      "Working on LpLm, column j = 690: 690/910 = 75.82417582417582%\n",
      "Working on LpLm, column j = 736: 736/910 = 80.87912087912088%\n",
      "Working on LpLm, column j = 782: 782/910 = 85.93406593406593%\n",
      "Working on LpLm, column j = 828: 828/910 = 90.98901098901099%\n",
      "Working on LpLm, column j = 874: 874/910 = 96.04395604395604%\n",
      "Working on Lz^2, column j = 1: 1/910 = 0.10989010989010989%\n",
      "Working on Lz^2, column j = 91: 91/910 = 10.0%\n",
      "Working on Lz^2, column j = 182: 182/910 = 20.0%\n",
      "Working on Lz^2, column j = 273: 273/910 = 30.0%\n",
      "Working on Lz^2, column j = 364: 364/910 = 40.0%\n",
      "Working on Lz^2, column j = 455: 455/910 = 50.0%\n",
      "Working on Lz^2, column j = 546: 546/910 = 60.0%\n",
      "Working on Lz^2, column j = 637: 637/910 = 70.0%\n",
      "Working on Lz^2, column j = 728: 728/910 = 80.0%\n",
      "Working on Lz^2, column j = 819: 819/910 = 90.0%\n",
      "Working on Lz^2, column j = 910: 910/910 = 100.0%\n",
      "elapsed time: 0.052573406 seconds\n",
      "\n",
      "Building CG table for ell1 = 8.0, ell2 = 8.0:\n",
      "Working on alpha1 = 1: 1/17\n",
      "Working on alpha1 = 2: 2/17\n",
      "Working on alpha1 = 3: 3/17\n",
      "Working on alpha1 = 4: 4/17\n",
      "Working on alpha1 = 5: 5/17\n",
      "Working on alpha1 = 6: 6/17\n",
      "Working on alpha1 = 7: 7/17\n",
      "Working on alpha1 = 8: 8/17\n",
      "Working on alpha1 = 9: 9/17\n",
      "Working on alpha1 = 10: 10/17\n",
      "Working on alpha1 = 11: 11/17\n",
      "Working on alpha1 = 12: 12/17\n",
      "Working on alpha1 = 13: 13/17\n",
      "Working on alpha1 = 14: 14/17\n",
      "Working on alpha1 = 15: 15/17\n",
      "Working on alpha1 = 16: 16/17\n",
      "Working on alpha1 = 17: 17/17\n",
      "elapsed time: 32.640260395 seconds\n",
      "\n",
      "Building 2-body interaction matrix ...\n",
      "Working on alpha1 = 1: 1/17\n",
      "Working on alpha1 = 2: 2/17\n",
      "Working on alpha1 = 3: 3/17\n",
      "Working on alpha1 = 4: 4/17\n",
      "Working on alpha1 = 5: 5/17\n",
      "Working on alpha1 = 6: 6/17\n",
      "Working on alpha1 = 7: 7/17\n",
      "Working on alpha1 = 8: 8/17\n",
      "Working on alpha1 = 9: 9/17\n",
      "Working on alpha1 = 10: 10/17\n",
      "Working on alpha1 = 11: 11/17\n",
      "Working on alpha1 = 12: 12/17\n",
      "Working on alpha1 = 13: 13/17\n",
      "Working on alpha1 = 14: 14/17\n",
      "Working on alpha1 = 15: 15/17\n",
      "Working on alpha1 = 16: 16/17\n",
      "Working on alpha1 = 17: 17/17\n",
      "elapsed time: 1.206246981 seconds\n",
      "\n",
      "Building Hami matrix of size 910 x 910 ...\n",
      "Working on H, column j = 1: 1/910 = 0.10989010989010989%\n",
      "Working on H, column j = 46: 46/910 = 5.054945054945055%\n",
      "Working on H, column j = 92: 92/910 = 10.10989010989011%\n",
      "Working on H, column j = 138: 138/910 = 15.164835164835164%\n",
      "Working on H, column j = 184: 184/910 = 20.21978021978022%\n",
      "Working on H, column j = 230: 230/910 = 25.274725274725274%\n",
      "Working on H, column j = 276: 276/910 = 30.32967032967033%\n",
      "Working on H, column j = 322: 322/910 = 35.38461538461539%\n",
      "Working on H, column j = 368: 368/910 = 40.43956043956044%\n",
      "Working on H, column j = 414: 414/910 = 45.494505494505496%\n",
      "Working on H, column j = 460: 460/910 = 50.54945054945055%\n",
      "Working on H, column j = 506: 506/910 = 55.604395604395606%\n",
      "Working on H, column j = 552: 552/910 = 60.65934065934066%\n",
      "Working on H, column j = 598: 598/910 = 65.71428571428571%\n",
      "Working on H, column j = 644: 644/910 = 70.76923076923077%\n",
      "Working on H, column j = 690: 690/910 = 75.82417582417582%\n",
      "Working on H, column j = 736: 736/910 = 80.87912087912088%\n",
      "Working on H, column j = 782: 782/910 = 85.93406593406593%\n",
      "Working on H, column j = 828: 828/910 = 90.98901098901099%\n",
      "Working on H, column j = 874: 874/910 = 96.04395604395604%\n",
      "elapsed time: 0.102268016 seconds\n",
      "\n",
      " 33.949758 seconds (55.64 M allocations: 1019.911 MiB, 0.80% gc time)\n",
      "Diagonalizing Hami of size 910 x 910 with eig ...\n",
      "elapsed time: 0.326751747 seconds\n",
      "\n",
      "Organizing spectrum according to quantum number L ...\n",
      "elapsed time: 0.024549503 seconds\n",
      "\n"
     ]
    }
   ],
   "source": [
    "N = 9\n",
    "Nphi = 2*(N-1)\n",
    "\n",
    "setup = HaldaneSphereSetupLLL(N, Nphi, 0)\n",
    "\n",
    "pp = spherical_Coulomb_pseudopotentials(get_ell(setup), 0)\n",
    "@time Hami = HaldaneSphereHamiLLL(setup, pp, build_CG_table(get_ell(setup)))\n",
    "# @time Hami = HaldaneSphereHamiLLL(setup, pp, load_CG_table(get_ell(setup), CG_dir))\n",
    "eig!(Hami)\n",
    "organize_spectrum!(Hami);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x13dfb9d10>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax[:plot](Hami.spectrum[:, 1], Hami.spectrum[:, 2] - minimum(Hami.spectrum[:, 2]), ls=\"none\", marker=\"_\", ms=\"12\", mew=\"1.5\")\n",
    "ax[:set_xlabel](\"\\$L\\$\")\n",
    "ax[:set_ylabel](\"\\$E~[e^2/(\\\\epsilon\\\\ell_0]\\$\")\n",
    "ax[:set_title](\"\\$N=$(N), N_\\\\phi=$(Nphi)\\$\")\n",
    "ax[:set_xlim](-1, 20)\n",
    "ax[:set_ylim](-0.01, 0.502);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## For $N = 9$, Calculate and plot pair correlation function along equator of sphere (great circle), cf. Fig. 4 of Rezayi and Read\n",
    "$g(\\mathbf{r}) \\equiv \\frac{1}{\\rho^2}\\langle\\hat\\psi^\\dagger(\\mathbf{r})\\,\\hat\\psi^\\dagger(0)\\,\\hat\\psi(0)\\,\\hat\\psi(\\mathbf{r})\\rangle $, where $\\hat\\psi(\\mathbf{r})$ is the electron field operator in the continuum projected into the LLL, and $\\rho$ is the 2D density of electrons."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Computing 4-point functions ...\n",
      "Working on alpha2p = 1: 1/17\n",
      "Working on alpha2p = 2: 2/17\n",
      "Working on alpha2p = 3: 3/17\n",
      "Working on alpha2p = 4: 4/17\n",
      "Working on alpha2p = 5: 5/17\n",
      "Working on alpha2p = 6: 6/17\n",
      "Working on alpha2p = 7: 7/17\n",
      "Working on alpha2p = 8: 8/17\n",
      "Working on alpha2p = 9: 9/17\n",
      "Working on alpha2p = 10: 10/17\n",
      "Working on alpha2p = 11: 11/17\n",
      "Working on alpha2p = 12: 12/17\n",
      "Working on alpha2p = 13: 13/17\n",
      "Working on alpha2p = 14: 14/17\n",
      "Working on alpha2p = 15: 15/17\n",
      "Working on alpha2p = 16: 16/17\n",
      "Working on alpha2p = 17: 17/17\n",
      "elapsed time: 0.167316856 seconds\n",
      "\n",
      "Computing pair correlation function for 200 points ...\n",
      "Working on g[i], i = 1: 1/200 = 0.5%\n",
      "Working on g[i], i = 10: 10/200 = 5.0%\n",
      "Working on g[i], i = 20: 20/200 = 10.0%\n",
      "Working on g[i], i = 30: 30/200 = 15.0%\n",
      "Working on g[i], i = 40: 40/200 = 20.0%\n",
      "Working on g[i], i = 50: 50/200 = 25.0%\n",
      "Working on g[i], i = 60: 60/200 = 30.0%\n",
      "Working on g[i], i = 70: 70/200 = 35.0%\n",
      "Working on g[i], i = 80: 80/200 = 40.0%\n",
      "Working on g[i], i = 90: 90/200 = 45.0%\n",
      "Working on g[i], i = 100: 100/200 = 50.0%\n",
      "Working on g[i], i = 110: 110/200 = 55.0%\n",
      "Working on g[i], i = 120: 120/200 = 60.0%\n",
      "Working on g[i], i = 130: 130/200 = 65.0%\n",
      "Working on g[i], i = 140: 140/200 = 70.0%\n",
      "Working on g[i], i = 150: 150/200 = 75.0%\n",
      "Working on g[i], i = 160: 160/200 = 80.0%\n",
      "Working on g[i], i = 170: 170/200 = 85.0%\n",
      "Working on g[i], i = 180: 180/200 = 90.0%\n",
      "Working on g[i], i = 190: 190/200 = 95.0%\n",
      "Working on g[i], i = 200: 200/200 = 100.0%\n",
      "elapsed time: 32.742758693 seconds\n",
      "\n",
      "Throwing out imaginary part of g: maximum(abs, imag(g)) = 3.143784773416456e-17\n"
     ]
    }
   ],
   "source": [
    "psi = Hami.eigenstates[:, 1]\n",
    "g = pair_correlation_function_equator_gc(psi, setup.states, pts=200, frac=0.5);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x13ce4f490>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax[:plot](g[:, 1], g[:, 2])\n",
    "ax[:set_xlabel](\"\\$r/\\\\ell_0\\$\")\n",
    "ax[:set_ylabel](\"\\$g(r)\\$\")\n",
    "ax[:set_title](\"\\$N=$(N), N_\\\\phi=$(Nphi)\\$\")\n",
    "ax[:axhline](1, c=\"k\", ls=\"--\", lw=1, alpha=0.5)\n",
    "ax[:set_xlim](0, maximum(g[:, 1]))\n",
    "ax[:set_ylim](0, 1.3)\n",
    "ax[:yaxis][:set_ticks]([0, 0.5, 1.0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.6.0",
   "language": "julia",
   "name": "julia-0.6"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
